
package net.virtualearth.dev.webservices.v1.route;

import java.util.concurrent.Future;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.AsyncHandler;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.Response;
import javax.xml.ws.ResponseWrapper;
import net.virtualearth.dev.webservices.v1.route.contracts.CalculateRouteResponse;
import net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoutesFromMajorRoadsResponse;


/**
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.1.4-hudson-208-
 * Generated source version: 2.1
 * 
 */
@WebService(name = "IRouteService", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts")
@XmlSeeAlso({
    com.microsoft.schemas._2003._10.serialization.ObjectFactory.class,
    net.virtualearth.dev.webservices.v1.common.ObjectFactory.class,
    net.virtualearth.dev.webservices.v1.route.contracts.ObjectFactory.class,
    net.virtualearth.dev.webservices.v1.route.ObjectFactory.class
})
public interface IRouteService {


    /**
     * 
     * @param request
     * @return
     *     returns javax.xml.ws.Response<net.virtualearth.dev.webservices.v1.route.contracts.CalculateRouteResponse>
     */
    @WebMethod(operationName = "CalculateRoute", action = "http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/CalculateRoute")
    @RequestWrapper(localName = "CalculateRoute", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoute")
    @ResponseWrapper(localName = "CalculateRouteResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRouteResponse")
    public Response<CalculateRouteResponse> calculateRouteAsync(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts")
        RouteRequest request);

    /**
     * 
     * @param request
     * @param asyncHandler
     * @return
     *     returns java.util.concurrent.Future<? extends java.lang.Object>
     */
    @WebMethod(operationName = "CalculateRoute", action = "http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/CalculateRoute")
    @RequestWrapper(localName = "CalculateRoute", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoute")
    @ResponseWrapper(localName = "CalculateRouteResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRouteResponse")
    public Future<?> calculateRouteAsync(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts")
        RouteRequest request,
        @WebParam(name = "asyncHandler", targetNamespace = "")
        AsyncHandler<CalculateRouteResponse> asyncHandler);

    /**
     * 
     * @param request
     * @return
     *     returns net.virtualearth.dev.webservices.v1.route.RouteResponse
     * @throws IRouteServiceCalculateRouteResponseSummaryFaultFaultMessage
     */
    @WebMethod(operationName = "CalculateRoute", action = "http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/CalculateRoute")
    @WebResult(name = "CalculateRouteResult", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts")
    @RequestWrapper(localName = "CalculateRoute", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoute")
    @ResponseWrapper(localName = "CalculateRouteResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRouteResponse")
    public RouteResponse calculateRoute(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts")
        RouteRequest request)
        throws IRouteServiceCalculateRouteResponseSummaryFaultFaultMessage
    ;

    /**
     * 
     * @param request
     * @return
     *     returns javax.xml.ws.Response<net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoutesFromMajorRoadsResponse>
     */
    @WebMethod(operationName = "CalculateRoutesFromMajorRoads", action = "http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/CalculateRoutesFromMajorRoads")
    @RequestWrapper(localName = "CalculateRoutesFromMajorRoads", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoutesFromMajorRoads")
    @ResponseWrapper(localName = "CalculateRoutesFromMajorRoadsResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoutesFromMajorRoadsResponse")
    public Response<CalculateRoutesFromMajorRoadsResponse> calculateRoutesFromMajorRoadsAsync(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts")
        MajorRoutesRequest request);

    /**
     * 
     * @param request
     * @param asyncHandler
     * @return
     *     returns java.util.concurrent.Future<? extends java.lang.Object>
     */
    @WebMethod(operationName = "CalculateRoutesFromMajorRoads", action = "http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/CalculateRoutesFromMajorRoads")
    @RequestWrapper(localName = "CalculateRoutesFromMajorRoads", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoutesFromMajorRoads")
    @ResponseWrapper(localName = "CalculateRoutesFromMajorRoadsResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoutesFromMajorRoadsResponse")
    public Future<?> calculateRoutesFromMajorRoadsAsync(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts")
        MajorRoutesRequest request,
        @WebParam(name = "asyncHandler", targetNamespace = "")
        AsyncHandler<CalculateRoutesFromMajorRoadsResponse> asyncHandler);

    /**
     * 
     * @param request
     * @return
     *     returns net.virtualearth.dev.webservices.v1.route.MajorRoutesResponse
     * @throws IRouteServiceCalculateRoutesFromMajorRoadsResponseSummaryFaultFaultMessage
     */
    @WebMethod(operationName = "CalculateRoutesFromMajorRoads", action = "http://dev.virtualearth.net/webservices/v1/route/contracts/IRouteService/CalculateRoutesFromMajorRoads")
    @WebResult(name = "CalculateRoutesFromMajorRoadsResult", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts")
    @RequestWrapper(localName = "CalculateRoutesFromMajorRoads", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoutesFromMajorRoads")
    @ResponseWrapper(localName = "CalculateRoutesFromMajorRoadsResponse", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts", className = "net.virtualearth.dev.webservices.v1.route.contracts.CalculateRoutesFromMajorRoadsResponse")
    public MajorRoutesResponse calculateRoutesFromMajorRoads(
        @WebParam(name = "request", targetNamespace = "http://dev.virtualearth.net/webservices/v1/route/contracts")
        MajorRoutesRequest request)
        throws IRouteServiceCalculateRoutesFromMajorRoadsResponseSummaryFaultFaultMessage
    ;

}
